﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using _23_Command.松耦合设计;
using _23_Command.紧耦合设计;
namespace _23_Command
{
    class Program
    {
        /*
         命令模式： 、
          1、能较容易的设计一个命令队列
          2、在需要的情况下，可以较容易的将命令记入日志
          3、允许接受请求一方决定是否要否决请求
          4、可以容易的实现对请求的撤销和重做
          5、由于加进新的具体命令类不影响其他的类，因此增加新的具体命令类很容易
             */
        static void Main(string[] args)
        {
            Waiter waiter = new Waiter();
            Barbecuer barbecuer = new Barbecuer();
            Command bakeMutton = new BakeMuttonCommand(barbecuer);
            Command bakeChickenWings = new BakeChickenCommand(barbecuer);

            waiter.SetOrder(bakeMutton);
            waiter.Notify();

            waiter.SetOrder(bakeMutton);
            waiter.SetOrder(bakeChickenWings);
            waiter.SetOrder(bakeMutton);
            waiter.Notify();

            waiter.SetOrder(bakeMutton);
            waiter.SetOrder(bakeChickenWings);
            waiter.SetOrder(bakeChickenWings);
            waiter.SetOrder(bakeChickenWings);
            waiter.Notify();

            Console.Read();
        }
    }
}
